Ana içeriğe geç

Yığın (Stack) Veri Yapısı

Yığın (stack) veri yapısı, son giren ilk çıkar (Last-In, First-Out - LIFO) prensibine dayalı bir veri yapısıdır. Yığın, elemanları belirli bir sırayla saklar ve yeni bir eleman yığının en üstüne (top) eklenir. Yığın veri yapısı, genellikle derleme, işlemci kayıtlarının depolanması, fonksiyon çağrıları vb. gibi birçok programlama probleminde kullanılır.

Gündelik hayatta yığın veri yapısının kullanıldığı 3 örnek:

  1. Bir web tarayıcısında geri alma (undo) özelliği için yığın veri yapısı kullanılabilir. Tarayıcının gezinti geçmişi, yığına eklenir ve kullanıcının geri alma işlemi yapması durumunda, en son ziyaret edilen sayfa yığının en üstünden çıkarılır.
  2. Bir e-posta istemcisi, gelen kutusundaki e-postaların listesi için yığın veri yapısını kullanabilir. E-postaların listesi, gelen kutusuna gelen sırayla yığına eklenir ve kullanıcının en son gelen e-postayı görüntülemesi durumunda, yığının en üstündeki e-posta çıkarılır.
  3. Bir kelime işlemcisi, yazdığınız metinlerin düzenlenmesi için yığın veri yapısını kullanabilir. Düzenlenen metin, yığına eklenir ve kullanıcının geri alma işlemi yapması durumunda, son eklenen kelime yığının en üstünden çıkarılır.

Bu 3 örnek için Türkçe pseudo kodları:

  1. Bir web tarayıcısında geri alma (undo) özelliği için pseudo kod:
// Gezinti geçmişi için yığın oluştur
gezinti_gecmisi = bos_yigin()

// Kullanıcı yeni bir sayfa açtığında, yığına eklenir
yığın.ekle(yeni_sayfa)

// Kullanıcı geri alma işlemi yaptığında, en son ziyaret edilen sayfa yığından çıkarılır
eğer geri_alma_istendi ise
son_ziyaret_edilen_sayfa = yığın.son_eleman()
yığın.çıkar()
sayfayı_görüntüle(son_ziyaret_edilen_sayfa)
eğer_sonu

  1. Bir e-posta istemcisi, gelen kutusundaki e-postaların listesi için pseudo kod:
// Yeni bir e-posta gelince e-posta listesi yığınına ekle
e-posta_listesi = bos_yigin()

eğer yeni_eposta_geldi ise
e-posta_listesi.ekle(yeni_eposta)
eğer_sonu

// En son gelen e-postayı görüntülemek istediğinde, en son eklenen e-posta yığından çıkarılır
eğer en_son_eposta_görüntülenmek_istendi ise
en_son_eposta = e-posta_listesi.son_eleman()
e-posta_listesi.çıkar()
e-posta_görüntüle(en_son_eposta)
eğer_sonu

Yukarıdaki pseudo kodda, yeni bir e-posta geldiğinde, e-posta listesi yığınına e-posta eklenir. En son gelen e-postayı görüntülemek istediğinde, yığındaki en son e-posta çıkarılır ve e-posta görüntülenir.

Bir kelime işlemcisi, yazdığınız metinlerin düzenlenmesi için yığın veri yapısını kullanabilir.

// Yeni metin yığını oluştur
düzenlenen_metin_yığını = bos_yığın()

// Yeni kelime veya karakter girildiğinde, yığına eklenir
eğer yeni_kelime_girildi ise
düzenlenen_metin_yığını.ekle(yeni_kelime)
eğer_sonu

// Geri alma işlemi yapılmak istendiğinde, son eklenen kelime yığından çıkarılır
eğer geri_alma_istendi ise
son_eklenen_kelime = düzenlenen_metin_yığını.son_eleman()
düzenlenen_metin_yığını.çıkar()
eğer_sonu

Yukarıdaki pseudo kodda, yeni bir kelime veya karakter girildiğinde, düzenlenen metin yığınına eklenir. Geri alma işlemi yapılmak istendiğinde, yığındaki son eklenen kelime çıkarılır.